<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui">

	<p:dialog header="Registro de Agendamento" widgetVar="agendaDialog"
		appendToBody="true" modal="true" resizable="false" height="500"
		width="1250" dynamic="true" maximizable="true" showEffect="slide">

		<ui:insert name="eventCloseDialog" />

		<h:form id="formAgenda">
			<p:toolbar>
				<p:toolbarGroup align="right">
					<p:commandButton value="Salvar"
						action="#{agendaMB.salvarAgendamento}"
						oncomplete="if (!args.validationFailed) agendaDialog.hide();"
						update="msg" />
				</p:toolbarGroup>
			</p:toolbar>

			<p:tabView id="abaAgendamento" widgetVar="tabView"
				onTabShow="tabView.selectTab(0);">
				<p:tab id="aba1" title="Agendamento">
					<p:panel id="panelPaciente" header="Paciente" binding="#{agendaMB.panelPaciente}">
						<h:panelGrid columns="10"
							columnClasses="coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda">

							<h:outputText value="Nome: " />
							<p:inputText value="#{agendaMB.agenda.paciente.nome}"
								label="Nome" required="true" size="50" />

							<h:outputText value="Telefone 1: " />
							<p:inputMask
								value="#{agendaMB.agenda.paciente.telefones[0].numero}"
								required="true" label="Telefone 1" mask="(99) 9999-9999" />

							<h:outputText value="Telefone 2: " />
							<p:inputMask
								value="#{agendaMB.agenda.paciente.telefones[1].numero}"
								required="false" label="Telefone 2" mask="(99) 9999-9999" />

							<h:outputText value="CPF: " />
							<p:inputMask value="#{agendaMB.agenda.paciente.cpf}"
								required="false" label="CPF" mask="999.999.999-99" />

							<p:commandButton id="pacientesBtn" value="Localizar"
								update=":modalPesquisaPaciente" oncomplete="modalPaciente.show()"/>
							<p:commandButton value="Novo" action="#{agendaMB.novoPaciente}"
								update="panelPaciente" immediate="true" />
						</h:panelGrid>


					</p:panel>

					<p:spacer height="4"/>

					<p:panel header="Atendimento">
						<h:panelGrid columns="6"
							columnClasses="coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda">
							<h:outputText value="Médico: " />
							<p:selectOneMenu value="#{agendaMB.agenda.medico}" label="Médico"
								converter="medicoConverter" required="true">
								<f:selectItem value="#{null}" itemLabel="Selecione" />
								<f:selectItems value="#{agendaMB.medicos}" var="medico"
									itemLabel="#{medico.funcionario.usuario.nome}" />
								<p:ajax event="change" process="@this"
									listener="#{agendaMB.selecionarMedico}" update="panelAvisos valorHorario" />
							</p:selectOneMenu>

							<h:outputText value="Convênio: " />
							<p:selectOneMenu value="#{agendaMB.agenda.convenioEmpresa}"
								label="Convenio" converter="convenioEmpresaConverter"
								id="convenioCadastro" required="true">
								<f:selectItem value="#{null}" itemLabel="Selecione" />
								<f:selectItems value="#{agendaMB.convenioEmpresas}"
									var="convenioEmpresa"
									itemLabel="#{convenioEmpresa.convenio.nome}" />
							</p:selectOneMenu>

							<h:outputText value="Tipo de Atendimento: " />
							<p:selectOneMenu value="#{agendaMB.agenda.tipoAgendamento}"
								label="Tipo de Atendimento" required="true">
								<f:selectItems value="#{agendaMB.tiposAgendamento}" var="tipo"
									itemLabel="#{tipo.nome}" />
							</p:selectOneMenu>

							<h:outputText value="Tipo de Horário: " />
							<p:selectOneMenu value="#{agendaMB.agenda.tipoHorario}"
								label="Tipo de Horário" required="true">
								<f:selectItems value="#{agendaMB.tiposHorario}" var="tipo"
									itemLabel="#{tipo.nome}" />
							</p:selectOneMenu>

							<h:outputText value="Data: " />
							<p:calendar value="#{agendaMB.agenda.dataPrevista}"
								showOn="button" pattern="dd/MM/yyyy" navigator="true"
								locale="pt" label="Data" required="true">
								<p:ajax event="dateSelect" process="@this"
									listener="#{agendaMB.selecionarData}" update="panelAvisos valorHorario" />
							</p:calendar>

							<h:outputText value="Avisar em: " />
							<p:spinner value="#{agendaMB.agenda.quantidadeDiasAvisar}"
								label="Avisar antes em" required="true" />

							<h:outputText value="Fila de Espera: " />
							<p:selectBooleanCheckbox value="#{agendaMB.agenda.encaixe}">
								<p:ajax event="change" process="@this"
									update="labelHorario valorHorario" global="false" />
							</p:selectBooleanCheckbox>


							<p:outputPanel layout="inline" id="labelHorario">
								<h:outputText value="Horário: "
									rendered="#{not agendaMB.agenda.encaixe}" />
							</p:outputPanel>

							<p:outputPanel layout="inline" id="valorHorario">
							
								<p:selectOneMenu value="#{agendaMB.horarioConsulta}" label="Horário"
									converter="horarioAgendamentoConverter" required="true"
									rendered="#{not agendaMB.agenda.encaixe}">
									<f:selectItem value="#{null}" itemLabel="Selecione" />
									<f:selectItems value="#{agendaMB.horarios}" var="horario"
										itemLabel="#{horario.descricao}" />
								</p:selectOneMenu>
							</p:outputPanel>

							<h:outputText value="Observação: " />
							<p:inputTextarea value="#{agendaMB.agenda.observacao}" cols="70"
								rows="3" label="Observações" autoResize="false"/>
						</h:panelGrid>

						<p:dataList id="panelAvisos" value="#{agendaMB.avisos}"
							var="aviso" itemType="square" paginator="true" rows="4"
							paginatorPosition="top">
							<f:facet name="header">
								<h:outputText value="Alertas" />
							</f:facet>
							<h:outputText value="#{aviso.titulo}: "
								style="font-family: serif; font-size: small; font-weight:normal;" />
							<h:outputText value="#{aviso.descricao}"
								style="font-family: serif; font-size: small;" />
						</p:dataList>
					</p:panel>
				</p:tab>

				<p:tab id="aba2" title="Fila de Atendimento">
					<p:panel header="Situação">
						<h:panelGrid columns="6"
							columnClasses="coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda">
							<h:outputText value="Situação: " />
							<p:selectOneMenu value="#{agendaMB.agenda.statusAgendamento}"
								label="Situação" required="true">
								<f:selectItems value="#{agendaMB.listaStatusAgendamento}"
									var="status" itemLabel="#{status.nome}" />
							</p:selectOneMenu>

							<h:outputText value="Ordem: " />
							<p:spinner value="#{agendaMB.agenda.ordem}" label="Ordem"
								required="true" />

							<h:outputText />
							<h:outputText />

							<h:outputText value="Horário Chegada: " />
							<h:inputText value="#{agendaMB.agenda.horaChegada}"
								disabled="true">
								<f:convertDateTime pattern="dd/MM/yyyy HH:mm" />
							</h:inputText>

							<h:outputText value="Início da Consulta: " />
							<h:inputText value="#{agendaMB.agenda.horaInicioAtendimento}"
								disabled="true">
								<f:convertDateTime pattern="dd/MM/yyyy HH:mm" />
							</h:inputText>

							<h:outputText value="Término da Consulta: " />
							<h:inputText value="#{agendaMB.agenda.horaTerminoAtendimento}"
								disabled="true">
								<f:convertDateTime pattern="dd/MM/yyyy HH:mm" />
							</h:inputText>
						</h:panelGrid>
					</p:panel>

					<br />

					<p:panel header="Atualizações">
						<p:dataTable value="#{agendaMB.agenda.logsAgenda}" var="log"
							paginator="true" paginatorPosition="bottom" rows="8"
							style="width: 100%;" sortBy="#{log.data}" sortOrder="descending">

							<f:facet name="header">
								<h:outputText
									value="Lista de Alterações Realizadas neste Agendamento" />
							</f:facet>

							<p:column sortBy="#{log.funcionario.usuario.nome}">
								<f:facet name="header">
									<h:outputText value="Usuário" />
								</f:facet>
								<h:outputText value="#{log.funcionario.usuario.nome}" />
							</p:column>

							<p:column sortBy="#{log.data}">
								<f:facet name="header">
									<h:outputText value="Data" />
								</f:facet>
								<h:outputText value="#{log.data}">
									<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" locale="pt_BR"
										timeZone="America/Sao_Paulo" />
								</h:outputText>
							</p:column>

							<p:column>
								<f:facet name="header">
									<h:outputText value="Evento" />
								</f:facet>
								<h:outputText value="#{log.evento}" />
							</p:column>
						</p:dataTable>
					</p:panel>
				</p:tab>
			</p:tabView>
			<p:growl showSummary="true" showDetail="true" id="msg" />
		</h:form>
	</p:dialog>

	<p:dialog id="modalPesquisaPaciente" header="Pesquisa de Pacientes" dynamic="true" widgetVar="modalPaciente" modal="true" appendToBody="true" hideEffect="explode">
		<h:form id="formPesquisaPaciente">
			<h:panelGrid columns="5"
				columnClasses="coluna-direita, coluna-esquerda, coluna-direita, coluna-esquerda, coluna-direita">
				<h:outputText value="Nome: " />
				<p:inputText value="#{agendaMB.pacientePesquisa.nome}" label="Nome"
					size="62" />

				<h:outputText value="CPF: " />
				<p:inputMask value="#{agendaMB.pacientePesquisa.cpf}"
					required="false" label="CPF" mask="999.999.999-99" />
				<p:commandButton value="Pesquisar" update="listaPacientes" />
			</h:panelGrid>

			<p:dataTable id="listaPacientes" value="#{agendaMB.pacientes}"
				var="paciente" paginator="true" rows="5"
					emptyMessage="Nenhum paciente encontrado!">
				<f:facet name="header">
					<h:outputText value="Lista de Pacientes" />
				</f:facet>
				<p:column>
					<f:facet name="header">
						<h:outputText value="Nome" />
					</f:facet>
					<h:outputText value="#{paciente.nome}" />
				</p:column>

				<p:column>
					<f:facet name="header">
						<h:outputText value="CPF" />
					</f:facet>
					<h:outputText value="#{paciente.cpf}" />
				</p:column>

				<p:column>
					<f:facet name="header">
						<h:outputText value="Telefone" />
					</f:facet>
					<h:outputText value="#{paciente.telefones[0].numero}"
						rendered="#{not empty paciente.telefones}" />
				</p:column>

				<p:column style="width:32px">
					<p:commandLink action="#{agendaMB.selecionarPaciente(paciente)}"
						update=":formAgenda:abaAgendamento:panelPaciente" title="Selecionar Paciente" immediate="true"
						oncomplete="modalPaciente.hide();">
						<p:graphicImage value="#{resource['images/select.png']}" />
					</p:commandLink>
				</p:column>
			</p:dataTable>
		</h:form>
	</p:dialog>	
</ui:composition>
